class A():
    # __new__ 开辟空间并且把对象的引用返回出去(拿到self给__init__)
    # 如果重写了__new__方法没有开辟空间并且把对象的引用返回出去那么实例对象就是None
    # 如果__init__方法不够用的重新__new__，在初始化之前执行的操作
    def __new__(cls, *args, **kwargs):
        # print(cls)  # cls=A
        # 1.为对象分配内存空间
        newA = super().__new__(cls)
        # 2.返回对象的引用
        return newA

    def __init__(self):
        print(self)

a1 = A()  # 先去开辟一个内存空间把这个对象存进去，再去调用__init__方法
print(a1) # 对象名 = self
a2 = A()
print(a2)
